Distributed user interfaces as a service

ABSTRACT

Technologies are generally described to send distributed user interface elements to a customer. In some examples, a virtualization server may receive an application to be provided to a customer. The visualization server may separate the application into multiple user interface elements and encapsulate each user interface element with virtualization components for individual delivery to the customer. Subsequently, the virtualization server may then forward the encapsulated element(s) to one or more customer devices.

CROSS-REFERENCE TO RELATED APPLICATION

This Application is a Continuation under 35 U.S.C. §120 of U.S.application Ser. No. 14/373,026 filed on Jul. 17, 2014, which is theU.S. National Stage filing under 35 U.S.C. §371 of PCT Application. Ser.No. PCT/US13/63742 filed on Oct. 7, 2013. The PCT Application and U.S.application Ser. No. 14/373,026 are herein incorporated by reference intheir entirety.

BACKGROUND

Unless otherwise indicated herein, the materials described in thissection are not prior art to the claims in this application and are notadmitted to be prior art by inclusion in this section.

As computing devices and platforms proliferate, individual users mayfind themselves using multiple computing devices and platforms toaccomplish tasks, sometimes simultaneously. For example, a user may haveavailable a desktop computer, a laptop computer, a tablet computer,and/or a smart phone, and may use one or more of the different devicesdepending on the situation. At the same time, applications provided viaa network or from remote locations are becoming more widespread. As aresult, in some situations a user may wish to distribute the userinterface elements of a particular network-provided application acrossdifferent devices.

Distributed user interface (DUI) for mobile and cloud applications is apotentially complex achievement that involves both user-side andserver-side components. Moreover, specific changes may be needed ininfrastructure for DUI content like additional code for each element,potentially holding many sessions per single user and application suchthat a datacenter optimized for DUI may be differently equipped comparedto a conventional datacenter. Conventional datacenters typically do notprovide DUI as a specialized service that can focus on and maintainDUI-centered functions and infrastructures.

SUMMARY

The present disclosure generally describes techniques to providedistributed user interfaces as a service.

According to some examples, a method is provided to send distributeduser interface controls to customers. The method may include receivingan application to be provided to a customer, separating the applicationinto multiple user interface controls, encapsulating at least one of theuser interface controls by packaging it with at least one visualizationcomponent, and sending the encapsulated user interface control(s) to afirst device associated with the customer.

According to other examples, a system is provided to send distributeduser interface controls to customers. The system may include a memoryconfigured to store application user interface data and a visualizationserver coupled to the memory. The visualization server may be configuredto receive an application to be provided to a customer, separate theapplication into multiple user interface controls, encapsulate at leastone of the user interface controls by packaging it with at least onevirtualization component, and send the encapsulated user interfacecontrol(s) to a first device associated with the customer.

According to further examples, a virtualization server is provided tosend distributed user interface controls to customers. The server mayinclude a processing module and an active forwarding module. Theprocessing module may be configured to receive an application to beprovided to a customer, separate the application into multiple userinterface controls, and encapsulate at least one of the user interfacecontrols by packaging it with at least one virtualization component. Theactive forwarding module may be configured to send the encapsulated userinterface control(s) to a first device associated with the customer.

According to yet further examples, a computer readable medium may storeinstructions to send distributed user interface controls to customers.The instructions may include receiving an application to be provided toa customer, separating the application into multiple user interfacecontrols, encapsulating at least one of the user interface controls bypackaging it with at least one visualization component, and sending theencapsulated user interface control(s) to a first device associated withthe customer.

The foregoing summary is illustrative only and is not intended to be inany way limiting. In addition to the illustrative aspects, embodiments,and features described above, further aspects, embodiments, and featureswill become apparent by reference to the drawings and the followingdetailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other features of this disclosure will become morefully apparent from the following description and appended claims, takenin conjunction with the accompanying drawings. Understanding that thesedrawings depict only several embodiments in accordance with thedisclosure and are, therefore, not to be considered limiting of itsscope, the disclosure will be described with additional specificity anddetail through use of the accompanying drawings, in which:

FIG. 1 illustrates an example system to send an application to acustomer;

FIG. 2 illustrates an example system to separate an application intoelements, encapsulating the elements, and sending the encapsulatedelements to a customer;

FIG. 3 illustrates the example system of FIG. 2 where encapsulatedapplication elements may be sent to different customer devices;

FIG. 4 illustrates an example process of sending an encapsulatedapplication element to a different customer device;

FIG. 5 illustrates a general purpose computing device, which may be usedto send distributed user interface elements to a customer;

FIG. 6 is a flow diagram illustrating an example method to senddistributed user interface elements to a customer that may be performedby a computing device such as the computing device in FIG. 5; and

FIG. 7 illustrates a block diagram of an example computer programproduct, all arranged in accordance with at least some embodimentsdescribed herein.

DETAILED DESCRIPTION

In the following detailed description, reference is made to theaccompanying drawings, which form a part hereof In the drawings, similarsymbols typically identity similar components, unless context dictatesotherwise. The illustrative embodiments described in the detaileddescription, drawings, and claims are not meant to be limiting. Otherembodiments may be utilized, and other changes may be made, withoutdeparting from the spirit or scope of the subject matter presentedherein. It will be readily understood that the aspects of the presentdisclosure, as generally described herein, and illustrated in theFigures, can be arranged, substituted, combined, separated, and designedin a wide variety of different configurations, all of which areexplicitly contemplated herein.

This disclosure is generally drawn, inter alia, to methods, apparatus,systems, devices, and/or computer program products related todistributed user interfaces that may be provided as a service.

Briefly stated, technologies are generally provided to send distributeduser interface elements to a customer. In some examples, avirtualization server may receive an application to be provided to acustomer. The virtualization server may separate the application intomultiple user interface elements and encapsulate each user interfaceelement with virtualization components for individual delivery to thecustomer. Subsequently, the virtualization server may then forward theencapsulated element(s) to one or more customer devices.

A datacenter, as used herein, refers to an entity that hosts servicesand applications for customers through one or more physical serverinstallations and one or more virtual machines executed in those serverinstallations. Customers of the datacenter may be organizations thatprovide access to their services for multiple users. One exampleconfiguration may include an online retail service that provides retailsale services to consumers (users). The retail service may employmultiple applications (e.g., presentation of retail goods, purchasemanagement, shipping management, inventory management, etc.), which maybe hosted by one or more datacenters. Thus, a consumer may communicatewith those applications of the retail service through a clientapplication such as a browser over one or more networks and receive theprovided service without realizing where the individual applications areactually executed. This scenario contrasts with configurations whereeach service provider would execute their applications and have theirusers access those applications on the retail service's own serversphysically located an retail service premises. One result of thenetworked approach described herein is that customers like the retailservice may move their hosted services/applications from one datacenterto another without the users noticing a difference or may assemble afinal user offering from the services of multiple datacenters.

FIG. 1 illustrates an example system to send an application to acustomer, arranged in accordance with at least some embodimentsdescribed herein.

As shown in a diagram 100, an application provider 102 may provide anapplication 110 to a customer device 106 via a server 104. For example,the application 110 may be a cloud-based, web-based, or network-basedapplication, and the intermediate server 104 may be an internet serviceprovider, a datacenter, or other network server. The applicationprovider 102 may provide the application 110 to the server 104, which inturn may provide the application 110 to the customer device 106. Asdepicted in the diagram 100, the application 110 may have or beassociated with one or more components or elements. For example, theapplication 110 may include a first element 112, a second element 114,and a third element 116. Application elements may include user interfacecontrols (e.g., buttons, input fields, menus, etc.) or elements fordisplaying content.

As discussed above, in some situations a customer may wish to distributethe different elements of the application 110 across different customerdevices. For example, if the application 110 is a web browser, thecustomer may wish to have web content be displayed on a desktop computermonitor and have web browsing controls on a smartphone or tabletcomputer. Similarly, if the application 110 is an image editingapplication, the customer may wish to have the image being editeddisplayed on a large touch-enabled monitor or tablet and image editingcontrols on a smaller, touch-enabled device. At the same time, theapplication provider 102 may not wish to take the extra effort torepackage the application 110 to provide this element distributioncapability, and may prefer to provide the application 110 as is.

To address the concerns of the customer and the application provider102, in some embodiments, the server 104 may function as avirtualization server. The virtualization server may take theapplication 110 from the application provider 102, separate theapplication 110 into multiple application elements, and provide theseparated application elements to the customer through download, one ormore network sessions, or similar techniques. In some embodiments, thevirtualization server may be a proxy server and/or implement a WebServer Gateway Interface (WSGI) layer module that resides between theapplication provider 102 and the customer. The virtualization server maybe located at a datacenter or at another individual entity (e.g., aseparate company providing application element encapsulation anddistribution services).

FIG. 2 illustrates an example system to separate an application intoelements, encapsulating the elements, and sending the encapsulatedelements to a customer, arranged in accordance with at least someembodiments described herein.

As shown in a diagram 200, and similar to the diagram 100, theapplication provider 102 may provide the application 110 containing thefirst element 112, the second element 114, and the third element 116 toa virtualization server 204. The virtualization server 204 may thenseparate the application 110 into the first element 112, the secondelement 114, the third element 116, and remaining elements 220 of theapplication 110. The virtualization server 204 may be able to detect theindividual elements 112-116 and the remaining elements 220 based ontheir associated properties and descriptors in the application 110. Anapplication element (e.g., a menu element) may have particularidentifiers or functional code associated with the application ingeneral and/or the application element in particular. In someembodiments, the application 110 may include inactive indicator tags(e.g., extensible markup language ‘XML’ tags) at appropriate locationsof application code to assist in the separation of the individualelements 112-116. For example, the application provider 102 may insertthe indicator tags into the application 110 before providing theapplication 110 to the virtualization server 204. In some embodiments,the virtualization server 204 may generate the indicator tags based onproperties associated with the application 110. For example, thevisualization server 204 may insert indicator tags into the application110 based on bounding boxes surrounding individual elements in theapplication 110, or based on boundaries delineating user interfacecontrols in the application 110.

After the application 110 has been separated as described above, thevirtualization server 204 may then encapsulate one or more of the firstelement 112, the second element 114, the third element 116, and theremaining elements 220. The virtualization server 204 may perform theencapsulation by packaging the separated elements with one or morevirtualization components such as headers associated with theapplication 110 that provide information (e.g., formatting, structures,dependencies, code, etc.) for execution of the application 110 at acustomer device. For example, the virtualization server 204 mayencapsulate each of the individual elements with a copy of theseheaders. In some embodiments, the virtualization server 204 may also addvirtualization controls to enable the separated elements to be moved.For example, the virtualization server 204 may inject code into anencapsulated element to provide a menu or other control that allows acustomer to move the element between different devices.

An active forwarding module 202 at the virtualization server 204 maythen be used to transmit the encapsulated elements to the customerdevice 106. In some embodiments, each encapsulated element to betransmitted to the customer device 106 may be transmitted in a separatenetwork session. For example, the remaining elements 220 may betransmitted in a session 206, the first element 112 may be transmittedin a session 208, the second element 114 may be transmitted in a session210, and the third element 116 may be transmitted in a session 212. Insome embodiments, although individual application elements may beprovided to the customer device 106 in individual sessions, theapplication provider 102 may still provide the application 110 and theassociated elements 112-116 to the virtualization server 204 in a singlesession. As a result, the application provider 102 may not have tomodify or adjust the application 110 and the associated elements 112-116to take advantage of the encapsulation and forwarding capabilities ofthe virtualization server 204. In some embodiments, the applicationprovider 102 may not even be aware that the virtualization server 204 isencapsulating and forwarding individual elements of the application 110.

The customer device 106 may then receive and render or display theencapsulated elements. In some embodiments, the customer device 106 mayrender the encapsulated elements based on information associated orincluded with the encapsulated elements. For example, the virtualizationserver 204 may render the application 110 and the elements 112-116locally and capture the appearance of the rendered application 110 andthe elements 112-116 (including the appearance and locations of any userinterface controls). The virtualization server 204 may then packagevirtualization components (described above) with the encapsulatedelements that cause the encapsulated elements to be rendered at thecustomer device 106 according to the captured appearance/locationinformation. For example, the encapsulated elements may be rendered inframes at the customer device 106 to preserve the formatting andappearance of the application 110 and the associated elements 112-116.In some embodiments, the virtualization component(s) in the encapsulatedelements may be configured to detect the interface type associated withthe customer device 106 (e.g., input type, screen size, etc.) and/orinclude rendering instructions for the customer device 106, for examplebased on the interface type.

In some embodiments, a customer of the datacenter may be able to choosewhether to use the separation/encapsulation service provided by thevirtualization server 204. For example, the customer may be able totoggle an option or control at the customer device 106 provided by theapplication provider 102 and/or the virtualization server 204 thatselects whether the application 110 is separated and/or encapsulated. Insome embodiments, the application provider 102 and/or the virtualizationserver 204 may be able to determine whether or not to provide theseparation/encapsulation service based on detected customer usage and/orlogin characteristics. For example, the application provider102/virtualization server 204 may query the customer to determinewhether separation/encapsulation services are desired when the customerexecutes the application simultaneously on multiple devices. As anotherexample, the virtualization server 204 may query the customer todetermine whether its services are desired when it detects that thecustomer is logged in to on multiple devices. In some embodiments, theapplication provider 102/virtualization serer 204 may provide theseparation/encapsulation service automatically upon detecting particularcustomer usage or login characteristics, such as those described above.For example, when the customer executes a touch-enabled applicationwhile logged in on a desktop computer and a tablet computer, theapplication provider 102/virtualization server 204 may automaticallysend touch-based controls of the application to the tablet computer.

In response to determining that the separation/encapsulation service isnot to be provided (either via a customer selection or an independentdetermination), the virtualization server 204 may not provide theencapsulated elements. Instead, the virtualization server 204 mayinstruct the application provider 102 to provide the application 110 andits associated elements 112-116 via an alternate delivery path 230. Forexample, the application provider 102 may provide the application 110directly to the customer device 106 or through some other intermediary.The alternate delivery path may also be used to deliver certainresources unaffected by the virtualization server to the elements of theapplication that have been delivered through the virtualization server.For example, images that will be used by the various elements withoutmodification may be delivered by the alternate delivery path to reducebandwidth traffic of the virtualization server. Where necessary, thevirtualization server may add cross origin resource sharing informationas part of the modifications to the elements to facilitate delivery ofresources through one or more alternate delivery paths 230.

FIG. 3 illustrates the example system of FIG. 2 where encapsulatedapplication elements may be sent to different customer devices, arrangedin accordance with at least some embodiments described herein.

As shown in a diagram 300, the application provider 102 may provide theapplication 110 and the associated elements 112-116 to thevirtualization server 204, which in turn separates, encapsulates, andsends the different application elements to a customer. As describedabove, in some embodiments a customer may wish to display differentelements of a particular application on different devices. For example,instead of parsing the elements (112116 and 220) on the customer device106, the customer may wish to have the remaining elements 220 renderedon a second customer device 302 and the third element 116 rendered on athird customer device 304. Since each of the application elements may beencapsulated separately and provided to the customer in separatesessions, as described above in FIG. 2, the active forwarding module 202may transfer the sessions that correspond to the particular elements tothe desired devices. For example, the active forwarding module 202 maytransfer the session 206 with the remaining elements 220 to the secondcustomer device 302 and the session 212 with the third element 116 tothe third customer device 304.

In some embodiments, the active forwarding module 202 may transfer asession to a different device by modifying a destination associated withthe session. For example, the destinations of the sessions 206 and 212may originally be associated with the user device 106. The customer maythen request to have the remaining elements 220 and the third element116 rendered on the second customer device 302 and the third customerdevice 304, respectively. In response, the active forwarding module 202may modify the destination of the session 206 to that of the secondcustomer device 302 and may modify the destination of the session 212 tothat of the third customer device 304. In some examples, a session maybe transferred to another device using a temporary uniform resourcelocator (URL) and/or via an application on the other device. Forexample, the virtualization server 204 may send a temporary URL to thecustomer, as text, QR code, Bluetooth data, etc, which, when opened bythe customer on the other device, may cause the session to betransferred to the other device. As another example, an applicationexecuting on the other device may receive the session from thevirtualization server 204 in response to a session transfer request fromthe customer or in response to the customer starting or logging in tothe application. Virtualization components may be added or changedassociated with the transfer for improved rendering at the new device ordestination.

In some embodiments, the application 110 may be configured such thatdifferent elements 112-116 and the remaining elements 220 interact witheach other at the customer device 106. For example, the application 110may specify a local variable stored at the customer device 106 thataffects the elements 112-116 and the remaining elements 220. To addressthese situations, the virtualization server 204 may be configured todetect local variables in the application 110 during the separation andencapsulation process and to replace any detected local variables withevent-type variables. For example, event-type variable versions of alocal variable in application 110 may be included (e.g., as avirtualization component) in each of the encapsulated elements 112-116and the remaining elements 220. An intra-application forwarding module310 in the active forwarding module 202 may then be configured toreceive changes to an event-type variable associated with oneencapsulated element and forward the changes to the other encapsulatedelements. For example, when an event-type variable associated with thethird element 116 being rendered on the third customer device 304 ismodified, the intra-application forwarding module 310 may receive themodification, for example through a publish-subscribe model in which theintra-application forwarding module 310 is notified of event-typevariable changes. Subsequently, the intra-application forwarding module310 may forward the modification to the first element 112 and the secondelement 114 rendered at the customer device 106 and the remainingelements 220 rendered at the second customer device 302. The first andsecond elements 112/114 and the remaining elements 220 may then modifythe corresponding event-type variables at their devices (the customerdevice 106 and the second customer device 302, respectively)accordingly. In some embodiments, the intra-application forwardingmodule 310 may limit the extent to which modifications are forwarded.For example, the intra-application forwarding module 310 may limit thenumber of elements a particular modification can be forwarded to and/orthe number of times a particular modification can be forwarded. Theintra-application forwarding module 310 may also limit the possibleforwarding destinations, for example not allowing modifications to beforwarded to the application provider 102 or to particular encapsulatedelements.

As discussed above, the encapsulated elements may include virtualizationcomponents with rendering instructions for customer devices. In someembodiments, the virtualization components may cause a customer deviceto display an encapsulated element differently based on whether theencapsulated element has been forwarded to another device. For example,the encapsulated element may be displayed in one way on an originaldevice and may be displayed another way when forwarded from the originaldevice to a different device. In other embodiments, the virtualizationcomponents may cause a customer device to display an encapsulatedelement differently based on whether the customer device has a secureconnection. For example, the virtualization components may cause acustomer device that lacks a secure connection to display only some ofthe encapsulated element, to restrict some of the encapsulated elementfunctionality, or even prevent the customer device from displaying theencapsulated element.

FIG. 4 illustrates an example process 400 of sending an encapsulatedapplication element to a different customer device, arranged inaccordance with at least some embodiments described herein.

The process 400 may begin at an operation 402, where a virtualizationserver (e.g., the virtualization server 204) may receive a request froma customer to transfer an encapsulated application element (e.g., thethird element 116) to another device (e.g., the third customer device304). For example, the customer may select a different renderingdestination for the element via an application menu, or may send therequest from the other device. At an operation 404, the virtualizationserver may change the destination of the application element to that ofthe other device. For example, the virtualization server may modify adestination of a session (e.g., the session 212) associated with theelement. Subsequently, at an operation 406, the virtualization servermay determine whether any local variables are associated with thetransferred element. In response to determining that no local variablesare associated with the transferred element, the virtualization servermay then complete the transfer of the element at an operation 410. Onthe other hand, in response to determining that local variables areassociated with the transferred element, the virtualization server mayproceed to set up intra-application forwarding as described above at anoperation 408. Subsequently, the virtualization server may complete thetransfer of the element at the operation 410.

FIG. 5 illustrates a general purpose computing device, which may be usedto send distributed user interface elements to a customer, arranged inaccordance with at least some embodiments described herein.

For example, the computing device 500 may be used to separate,encapsulate, and distribute user interface elements as described herein.In an example basic configuration 502, the computing device 500 mayinclude one or more processors 504 and a system memory 506. A memory bus508 may be used to communicate between the processor 504 and the systemmemory 506. The basic configuration 502 is illustrated in FIG. 5 bythose components within the inner dashed line.

Depending on the desired configuration, the processor 504 may be of anytype, including but not limited to a microprocessor (LIP), amicrocontroller (ILIC), a digital signal processor (DSP), or anycombination thereof. The processor 504 may include one more levels ofcaching, such as a cache memory 512, a processor core 514, and registers516. The example processor core 514 may include an arithmetic logic unit(ALU), a floating point unit (FPU), a digital signal processing core(DSP Core), or any combination thereof. An example memory controller 518may also be used with the processor 504, or in some implementations, thememory controller 518 may be an internal part of the processor 504.

Depending on the desired configuration, the system memory 506 may be ofany type including but not limited to volatile memory (such as RAM),non-volatile memory (such as ROM, flash memory, etc.) or any combinationthereof. The system memory 506 may include an operating system 520, avirtualization module 522, and program data 524. The virtualizationmodule 522 may include an active forwarding module 526 to sendencapsulated elements and an intra-content forwarding module 528 tocoordinate between different encapsulated elements as described herein.The program data 524 may include, among other data, application elementdata 529 or the like, as described herein.

The computing device 500 may have additional features or functionality,and additional interfaces to facilitate communications between the basicconfiguration 502 and any desired devices and interfaces. For example, abus/interface controller 530 may be used to facilitate communicationsbetween the basic configuration 502 and one or more data storage devices532 via a storage interface bus 534. The data storage devices 532 may beone or more removable storage devices 536, one or more non-removablestorage devices 538, or a combination thereof. Examples of the removablestorage and the non-removable storage devices include magnetic diskdevices such as flexible disk drives and hard-disk drives (HDD), opticaldisk drives such as compact disk (CD) drives or digital versatile disk(DVD) drives, solid state drives (SSD), and tape drives to name a few.Example computer storage media may include volatile and nonvolatile,removable and non-removable media implemented in any method ortechnology for storage of information, such as computer readableinstructions, data structures, program modules, or other data.

The system memory 506, the removable storage devices 536 and thenon-removable storage devices 538 are examples of computer storagemedia. Computer storage media includes, but is not limited to, RAM, ROM,EEPROM, flash memory or other memory technology , CD-ROM, digitalversatile disks (DVD), solid state drives, or other optical storage,magnetic cassettes, magnetic tape, magnetic disk storage or othermagnetic storage devices, or any other medium which may be used to storethe desired information and which may be accessed by the computingdevice 500. Any such computer storage media may be part of the computingdevice 500.

The computing device 500 may also include an interface bus 540 forfacilitating communication from various interface devices (e.g., one ormore output devices 542, one or more peripheral interfaces 544, and oneor more communication devices 546) to the basic configuration 502 viathe bus/interface controller 530. Some of the example output devices 542include a graphics processing unit 548 and an audio processing unit 550,which may be configured to communicate to various external devices suchas a display or speakers via one or more A/V ports 552. One or moreexample peripheral interfaces 544 may include a serial interfacecontroller 554 or a parallel interface controller 556, which may beconfigured to communicate with external devices such as input devices(e.g., keyboard, mouse, pen, voice input device, touch input device,etc.) or other peripheral devices (e.g., printer, scanner, etc.) via oneor more I/O ports 558. An example communication device 546 includes anetwork controller 560, which may be arranged to facilitatecommunications with one or more other computing devices 562 over anetwork communication link via one or more communication ports 564. Theone or more other computing devices 562 may include servers at adatacenter, customer equipment, and comparable devices.

The network communication link may be one example of a communicationmedia. Communication media may be embodied by computer readableinstructions, data structures, program modules, or other data in amodulated data signal, such as a carrier wave or other transportmechanism, and may include any information delivery media. A, “modulateddata signal” may be a signal that has one or more of its characteristicsset or changed in such a manner as to encode information in the signal.By way of example, and not limitation, communication media may includewired media such as a wired network or direct-wired connection, andwireless media such as acoustic, radio frequency (RF), microwave,infrared (IR) and other wireless media. The term computer readable mediaas used herein may include both storage media and communication media.

The computing device 500 may be implemented as a part of a generalpurpose or specialized server, mainframe, or similar computer thatincludes any of the above functions. The computing device 500 may alsobe implemented as a personal computer including both laptop computer andnon-laptop computer configurations.

FIG. 6 is a flow diagram illustrating an example method for sendingdistributed user interface elements to a customer that may be performedby a computing device such as the computing device in FIG. 5, arrangedin accordance with at least some embodiments described herein.

Example methods may include one or more operations, functions or actionsas illustrated by one or more of blocks 622, 624, 626, and/or 628, andmay in some embodiments be performed by a computing device such as thecomputing device 500 in FIG. 5. The operations described in the blocks622-628 may also be stored as computer-executable instructions in acomputer-readable medium such as a computer-readable medium 620 of acomputing device 610.

An example process for sending distributed user interface elements tocustomers may begin with block 622, “RECEIVE AN APPLICATION”, where avirtualization server (e.g., the virtualization server 204) may receivean application (e.g., the application 110) from an application provider(e.g., the application provider 102), as described above.

Block 622 may be followed by block 624, “SEPARATE THE APPLICATION INTOMULTIPLE ELEMENTS”, where the virtualization server may separate thereceive application into multiple, individual application elements, asdescribed above. In some embodiments, the virtualization server may useinactive tags in the received application to guide the separation, ormay automatically determine the separation based on element propertiesin the received application, as described above.

Block 624 may be followed by block 626, “ENCAPSULATE EACH APPLICATIONELEMENT FOR INDIVIDUAL DELIVERY”, where the virtualization server mayencapsulate each separated application element with one or morevirtualization components as described above. For example, thevirtualization components may include a copy of a header associated withthe application, one or more distributed user interface controls,event-type variables, or any other suitable injected component, asdescribed above.

Finally, block 626 may be followed by block 628, “PROVIDE THEENCAPSULATED APPLICATION ELEMENTS TO CUSTOMER DEVICE(S)”, where thevirtualization server may provide the encapsulated elements to customerdevices via an active forwarding module (e.g., the active forwardingmodule 202), as described above. In some embodiments, the activeforwarding module may include an intra-application content forwardingmodule (e.g., the intra-application forwarding module 310) to enable thecoordination of event-type variables between encapsulated elements ondifferent devices, as described above.

FIG. 7 illustrates a block diagram of an example computer programproduct, arranged in accordance with at least some embodiments describedherein.

In some examples, as shown in FIG. 7, a computer program product 700 mayinclude a signal bearing medium 702 that may also include one or moremachine readable instructions 704 that, when executed by, for example, aprocessor may provide the functionality described herein. Thus, forexample, referring to the processor 504 in FIG. 5, the acceleratorassembly module 522 may undertake one or more of the tasks shown in FIG.7 in response to the instructions 704 conveyed to the processor 504 bythe signal bearing medium 702 to perform actions associated withintegrating hardware accelerators in a datacenter as described herein.Some of those instructions may include, for example, receiving anapplication, separating the application into multiple elements,encapsulating each element for individual delivery, and/or providing theencapsulated elements to customer device(s), according to someembodiments described herein.

In some implementations, the signal bearing medium 702 depicted in FIG.7 may encompass computer-readable medium 706, such as, but not limitedto, a hard disk drive, a solid state drive, a Compact Disc (CD), aDigital Versatile Disk (DVD), a digital tape, memory, etc. In someimplementations, the signal bearing medium 702 may encompass recordablemedium 708, such as, but not limited to, memory, read/write (R/W) CDs,R/W DVDs, etc. In some implementations, the signal bearing medium 702may encompass communications medium 710, such as, but not limited to, adigital and/or an analog communication medium (e.g., a fiber opticcable, a waveguide, a wired communications link, a wirelesscommunication link, etc.). Thus, for example, the computer programproduct 700 may be conveyed to one or more modules of the processor 504by an RF signal bearing medium, where the signal bearing medium 702 isconveyed by the wireless communications medium 710 (e.g., a wirelesscommunications medium conforming with the IEEE 802.11 standard).

According to some examples, a method is provided to send distributeduser interface controls to customers. The method may include receivingan application to be provided to a customer, separating the applicationinto multiple user interface controls, encapsulating at least one of theuser interface controls by packaging it with at least one virtualizationcomponent, and sending the encapsulated user interface control(s) to afirst device associated with the customer.

According to some embodiments, the method may further include receivingthe application from an application service provider and/or separatingthe application into multiple user interface controls based on at leastone inactive indicator tag associated with the application. The inactiveindicator tag(s) may be received with the application and/or generated.The inactive indicator tag(s) may be generated based on an elementbounding box associated with the application and/or a user interfacecontrol boundary associated with the application. The virtualizationcomponent(s) may include a copy of a header associated with theapplication and/or at least one distributed-user-interface-relatedcontrol.

According to other embodiments, the method may further include parsingthe application to capture an application appearance and/or anapplication user interface control location and causing the encapsulateduser interface controls(s) to be rendered at the first device based onthe application appearance and/or the application user interface controllocation. The method may further include causing the encapsulated userinterface control(s) to be rendered at the first device in at least oneframe. The method may further include sending each of the encapsulateduser interface control(s) in a separate session to the first device,receiving the application in a single session, and/or causing theencapsulated user interface control(s) to detect an interface typeassociated with the first device and/or provide at least one displayinstruction for rendering the encapsulated user interface control(s) atthe first device.

According to further embodiments, the method may further include sendinganother encapsulated user interface control to a second deviceassociated with the customer, sending the other encapsulated userinterface control based on a customer input, via a temporary uniformresource locator (URL) and/or via a device application executed by thesecond device. The method may further include determining that the otherencapsulated user interface control is associated with a local variable,replacing the local variable with an event-type variable, and forwardingan adjustment to the event-type variable at the second device to the atleast one encapsulated user interface control at the first device. Theforwarding may be limited based on a number of occurrences and/or aforwarding destination.

According to yet further embodiments, the method may further includeimplementing receiving the application, separating the application,encapsulating at least one of the multiple user interface controls, andsending the encapsulated user interface control(s) at a proxy, a WebServer Gateway Interface (WSGI) layer module, a datacenter, and/or aseparate entity. The method may further include determining whether tosend the encapsulated user interface control(s) based on a customerinput. The customer input may include a customer toggle control and/or acustomer platform login characteristic. The method may further includesending the application to the first device via an alternate deliverypath in response to determination not to send the encapsulated userinterface control(s).

According to other examples, a system is provided to send distributeduser interface controls to customers. The system may include a memoryconfigured to store application user interface data and a virtualizationserver coupled to the memory. The virtualization server may beconfigured to receive an application to be provided to a customer,separate the application into multiple user interface controls,encapsulate at least one of the user interface controls by packaging itwith at least one virtualization component, and send the encapsulateduser interface control(s) to a first device associated with thecustomer.

According to some embodiments, the virtualization server may be furtherconfigured to receive the application from an application serviceprovider and/or separate the application into multiple user interfacecontrols based on at least one inactive indicator tag associated withthe application. The inactive indicator tag(s) may be received with theapplication and/or generated by the virtualization server. Thevirtualization server may be configured to generate the inactiveindicator tag(s) based on an element bounding box associated with theapplication and/or a user interface control boundary associated with theapplication. The virtualization component(s) may include a copy of aheader associated with the application and/or at least onedistributed-user-interface-related control.

According to other embodiments, the virtualization server may be furtherconfigured to parse the application to capture an application appearanceand/or an application user interface control location and cause theencapsulated user interface control(s) to be rendered at the firstdevice based on the application appearance and/or the application userinterface control location. The virtualization server may be furtherconfigured to cause the encapsulated user interface control(s) to berendered at the first device in at least one frame. The virtualizationserver may be further configured to send each of the encapsulated userinterface control(s) in a separate session to the first device, receivethe application in a single session, and/or cause the encapsulated userinterface control(s) to detect an interface type associated with thefirst device and/or provide at least one display instruction forrendering the encapsulated user interface control(s) at the firstdevice.

According to further embodiments, the virtualization server may befurther configured to send another encapsulated user interface controlto a second device associated with the customer, send the otherencapsulated user interface control based on a customer input, via atemporary uniform resource locator (URL), and/or via a deviceapplication executed by the second device. The virtualization server maybe further configured to determine that the other encapsulated userinterface control is associated with a local variable, replace the localvariable with an event-type variable, and forward an adjustment to theevent-type variable at the second device to the at least oneencapsulated user interface control at the first device. The forwardingmay be limited based on a number of occurrences and/or a forwardingdestination.

According to yet further embodiments, the virtualization server mayinclude a proxy and/or a Web Server Gateway interface (WSGI) layermodule. The virtualization server may be located at a datacenter and/ora separate entity. The virtualization server may be further configuredto determine whether to send the encapsulated user interface control(s)based on a customer input. The customer input may include a customertoggle control and/or a customer platform login characteristic. Thevirtualization server may be further configured to send the applicationto the first device via an alternate delivery path in response todetermination not to send the encapsulated user interface control(s).

According to further examples, a virtualization server is provided tosend distributed user interface controls to customers. The server mayinclude a processing module and an active forwarding module. Theprocessing module may be configured to receive an application to beprovided to a customer, separate the application into multiple userinterface controls, and encapsulate at least one of the user interfacecontrols by packaging it with at least one virtualization component. Theactive forwarding module may be configured to send the encapsulated userinterface control(s) to a first device associated with the customer.

According to some embodiments, the processing module may be furtherconfigured to receive the application from an application serviceprovider and/or separate the application into multiple user interfacecontrols based on at least one inactive indicator tag associated withthe application. The inactive indicator tag(s) may be received with theapplication and/or generated by the processing module. The processingmodule may be configured to generate the inactive indicator tag(s) basedon an element bounding box associated with the application and/or a userinterface control boundary associated with the application. Thevirtualization component(s) may include a copy of a header associatedwith the application and/or at least onedistributed-user-interface-related control.

According to other embodiments, the processing module may be furtherconfigured to parse the application to capture an application appearanceand/or an application user interface control location and cause theencapsulated user interface control(s) to be rendered at the firstdevice based on the application appearance and/or the application userinterface control location. The processing module may be furtherconfigured to cause the encapsulated user interface control(s) to berendered at the first device in at least one frame. The activeforwarding module may be further configured to send each of theencapsulated user interface control(s) in a separate session to thefirst device. The processing module may be further configured to receivethe application in a single session and/or cause the encapsulated userinterface control(s) to detect an interface type associated with thefirst device and/or provide at least one display instruction forrendering the encapsulated user interface control(s) at the firstdevice.

According to further embodiments, the active forwarding module may befurther configured to send another encapsulated user interface controlto a second device associated with the customer, send the otherencapsulated user interface control based on a customer input, via atemporary uniform resource locator (URL), and/or via a deviceapplication executed by the second device. The processing module may befurther configured to determine that the other encapsulated userinterface control is associated with a local variable and replace thelocal variable with an event-type variable. The active forwarding modulemay be further configured to forward an adjustment to the event-typevariable at the second device to the at least one encapsulated userinterface control at the first device. The forwarding may be limitedbased on a number of occurrences and/or a forwarding destination.

According to yet further embodiments, the processing module and/or theactive forwarding module may include a proxy and/or a Web Server GatewayInterface (WSGI) layer module. The processing module and/or the activeforwarding module may be located at a datacenter and/or a separateentity. The processing module may be further configured to determinewhether to send the encapsulated user interface control(s) based on acustomer input. The customer input may include a customer toggle controland/or a customer platform login characteristic. The processing modulemay be further configured to cause the application to be sent to thefirst device via an alternate delivery path in response to determinationnot to send the encapsulated user interface control(s).

According to yet further examples, a computer readable medium may storeinstructions to send distributed user interface controls to customers.The instructions may include receiving an application to be provided toa customer, separating the application into multiple user interfacecontrols, encapsulating at least one of the user interface controls bypackaging it with at least one virtualization component, and sending theencapsulated user interface control(s) to a first device associated withthe customer.

According to some embodiments, the method may further include receivingthe application from an application service provider and/or separatingthe application into multiple user interface controls based on at leastone inactive indicator tag associated with the application. The inactiveindicator tag(s) may be received with the application and/or generated.The inactive indicator tag(s) may be generated based on an elementbounding box associated with the application and/or a user interfacecontrol boundary associated with the application. The virtualizationcomponent(s) may include a copy of a header associated with theapplication and/or at least one distributed-user-interface-relatedcontrol.

According to other embodiments, the method may further include parsingthe application to capture an application appearance and/or anapplication user interface control location and causing the encapsulateduser interface control(s) to be rendered at the first device based onthe application appearance and/or the application user interface controllocation. The method may further include causing the encapsulated userinterface control(s) to be rendered at the first device in at least oneframe. The method may further include sending each of the encapsulateduser interface control(s) in a separate session to the first device,receiving the application in a single session, and/or causing theencapsulated user interface control(s) to detect an interface typeassociated with the first device and/or provide at least one displayinstruction for rendering the encapsulated user interface control(s) atthe first device.

According to further embodiments, the method may further include sendinganother encapsulated user interface control to a second deviceassociated with the customer, sending the other encapsulated userinterface control based on a customer input, via a temporary uniformresource locator (URL), and/or via a device application executed by thesecond device. The method may further include determining that the otherencapsulated user interface control is associated with a local variable,replacing the local variable with an event-type variable, and forwardingan adjustment to the event-type variable at the second device to the atleast one encapsulated user interface control at the first device. Theforwarding may be limited based on a number of occurrences and/or aforwarding destination.

According to yet further embodiments, the method may further includeimplementing receiving the application, separating the application,encapsulating at least one of the multiple user interface controls, andsending the encapsulated user interface control(s) at a proxy, a WebServer Gateway Interface (WSGI) layer module, a datacenter, and/or aseparate entity. The method may further include determining whether tosend the encapsulated user interface control(s) based on a customerinput. The customer input may include a customer toggle control and/or acustomer platform login characteristic. The method may further includesending the application to the first device via an alternate deliverypath in response to determination not to send the encapsulated userinterface control(s).

There is little distinction left between hardware and softwareimplementations of aspects of systems; the use of hardware or softwareis generally (but not always, in that in certain contexts the choicebetween hardware and software may become significant) a design choicerepresenting cost vs. efficiency tradeoffs. There are various vehiclesby which processes and/or systems and/or other technologies describedherein may be effected (e.g., hardware, software, and/or firmware), andthat the preferred vehicle will vary with the context in which theprocesses and/or systems and/or other technologies are deployed. Forexample, if an implementer determines that speed and accuracy areparamount, the implementer may opt for a mainly hardware and/or firmwarevehicle; if flexibility is paramount, the implementer may opt for amainly software implementation; or, yet again alternatively, theimplementer may opt for some combination of hardware, software, and/orfirmware.

The foregoing detailed description has set forth various embodiments ofthe devices and/or processes via the use of block diagrams, flowcharts,and/or examples. Insofar as such block diagrams, flowcharts, and/orexamples contain one or more functions and/or operations, it will beunderstood by those within the art that each function and/or operationwithin such block diagrams, flowcharts, or examples may be implemented,individually and/or collectively, by a wide range of hardware, software,firmware, or virtually any combination thereof. In one embodiment,several portions of the subject matter described herein may beimplemented via Application Specific Integrated Circuits (ASICs), FieldProgrammable Gate Arrays (FPGAs), digital signal processors (DSPs), orother integrated formats. However, those skilled in the art willrecognize that some aspects of the embodiments disclosed herein, inwhole or in part, may be equivalently implemented in integratedcircuits, as one or more computer programs executing on one or morecomputers (e.g., as one or more programs executing on one or morecomputer systems), as one or more programs executing on one or moreprocessors (e.g., as one or more programs executing on one or moremicroprocessors), as firmware, or as virtually any combination thereof,and that designing the circuitry and/or writing the code for thesoftware and/or firmware would be well within the skill of one of skillin the art in light of this disclosure.

The present disclosure is not to be limited in terms of the particularembodiments described in this application, which are intended asillustrations of various aspects. Many modifications and variations canbe made without departing from its spirit and scope, as will be apparentto those skilled in the art. Functionally equivalent methods andapparatuses within the scope of the disclosure, in addition to thoseenumerated herein, will be apparent to those skilled in the art from theforegoing descriptions. Such modifications and variations are intendedto fall within the scope of the appended claims. The present disclosureis to be limited only by the terms of the appended claims, along withthe full scope of equivalents to which such claims are entitled. It isalso to be understood that the terminology used herein is for thepurpose of describing particular embodiments only, and is not intendedto be limiting.

In addition, those skilled in the art will appreciate that themechanisms of the subject matter described herein are capable of beingdistributed as a program product in a variety of forms, and that anillustrative embodiment of the subject matter described herein appliesregardless of the particular type of signal bearing medium used toactually carry out the distribution. Examples of a signal bearing mediuminclude, but are not limited to, the following: a recordable type mediumsuch as a floppy disk, a hard disk drive, a Compact Disc (CD), a DigitalVersatile Disk (DVD), a digital tape, a computer memory, a solid statedrive, etc.; and a transmission type medium such as a digital and/or ananalog communication medium (e.g., a fiber optic cable, a waveguide, awired communications link, a wireless communication link, etc.).

Those skilled in the art will recognize that it is common within the artto describe devices and/or processes in the fashion set forth herein,and thereafter use engineering practices to integrate such describeddevices and/or processes into data processing systems. That is, at leasta portion of the devices and/or processes described herein may beintegrated into a data processing system via a reasonable amount ofexperimentation. Those having skill in the art will recognize that adata processing system may include one or more of a system unit housing,a video display device, a memory such as volatile and non-volatilememory, processors such as microprocessors and digital signalprocessors, computational entities such as operating systems, drivers,graphical user interfaces, and applications programs, one or moreinteraction devices, such as a touch pad or screen, and/or controlsystems including feedback loops and control motors (e.g., feedback forsensing position and/or velocity of gantry systems; control motors tomove and/or adjust components and/or quantities).

A data processing system may be implemented utilizing any suitablecommercially available components, such as those found in datacomputing/communication and/or network computing/communication systems.The herein described subject matter sometimes illustrates differentcomponents contained within, or connected with, different othercomponents. It is to be understood that such depicted architectures aremerely exemplary, and that in fact many other architectures may beimplemented which achieve the same functionality. In a conceptual sense,any arrangement of components to achieve the same functionality iseffectively “associated” such that the desired functionality isachieved. Hence, any two components herein combined to achieve aparticular functionality may be seen as “associated with” each othersuch that the desired functionality is achieved, irrespective ofarchitectures or intermediate components. Likewise, any two componentsso associated may also be viewed as being “operably connected”, or“operably coupled”, to each other to achieve the desired functionality,and any two components capable of being so associated may also be viewedas being “operably couplable”, to each other to achieve the desiredfunctionality. Specific examples of operably couplable include but arenot limited to physically connectable and/or physically interactingcomponents and/or wirelessly interactable and/or wirelessly interactingcomponents and/or logically interacting and/or logically interactablecomponents.

With respect to the use of substantially any plural and/or singularterms herein, those having skill in the art can translate from theplural to the singular and/or from the singular to the plural as isappropriate to the context and/or application. The varioussingular/plural permutations may be expressly set forth herein for sakeof clarity.

It will be understood by those within the art that, in general, termsused herein, and especially in the appended claims (e.g., bodies of theappended claims) are generally intended as “open” terms (e.g., the term“including” should be interpreted as “including but not limited the term“having” should be interpreted as “having at least,” the term “includes”should be interpreted as “includes but is not limited to,” etc.). Itwill be further understood by those within the art that if a specificnumber of an introduced claim recitation is intended, such an intentwill be explicitly recited in the claim, and in the absence of suchrecitation no such intent is present. For example, as an aid tounderstanding, the following appended claims may contain usage of theintroductory phrases “at least one” and “one or more” to introduce claimrecitations. However, the use of such phrases should not be construed toimply that the introduction of a claim recitation by the indefinitearticles “a” or “an” limits any particular claim containing suchintroduced claim recitation to embodiments containing only one suchrecitation, even when the same claim includes the introductory phrases“one or more” or “at least one” and indefinite articles such as “a” or“an” (e.g., “a” and/or “an” should be interpreted to mean “at least one”or “one or more”); the same holds true for the use of definite articlesused to introduce claim recitations. In addition, even, if a specificnumber of an introduced claim recitation is explicitly recited, thoseskilled in the art will recognize that such recitation should beinterpreted to mean at least the recited number (e.g., the barerecitation of “two recitations,” without other modifiers, means at leasttwo recitations, or two or more recitations).

Furthermore, in those instances where a convention analogous to “atleast one of A, B, and C, etc.” is used, in general such a constructionis intended in the sense one having skill in the art would understandthe convention (e.g., “a system having at least one of A, B, and C”would include but not be limited to systems that have A alone, B alone,C alone, A and B together, A and C together, B and C together, and/or A,B, and C together, etc.). It will be further understood by those withinthe art that virtually any disjunctive word and/or phrase presenting twoor more alternative terms, whether in the description, claims, ordrawings, should be understood to contemplate the possibilities ofincluding one of the terms, either of the terms, or both terms. Forexample, the phrase “A or B” will be understood to include thepossibilities of “A” or “B” or “A and B.”

As will be understood by one skilled in the art, for any and allpurposes, such as in terms of providing a written description, allranges disclosed herein also encompass any and all possible subrangesand combinations of subranges thereof. Any listed range can be easilyrecognized as sufficiently describing and enabling the same range beingbroken down into at least equal halves, thirds, quarters, fifths,tenths, etc. As a non-limiting example, each range discussed herein canbe readily broken down into a lower third, middle third and upper third,etc. As will also be understood by one skilled in the art all languagesuch as “up to,” “at least,” “greater than,” “less than,” and the likeinclude the number recited and refer to ranges which can be subsequentlybroken down into subranges as discussed above. Finally, as will beunderstood by one skilled in the art, a range includes each individualmember. Thus, for example, a group having 1-3 cells refers to groupshaving 1, 2, or 3 cells. Similarly, a group having 1-5 cells refers togroups having 1, 2, 3, 4, or 5 cells, and so forth.

While various aspects and embodiments have been disclosed herein, otheraspects and embodiments will be apparent to those skilled in the art.The various aspects and embodiments disclosed herein are for purposes ofillustration and are not intended to be limiting, with the true scopeand spirit being indicated by the following claims.

What is claimed is:
 1. A method comprising: transmitting, by a firstdevice, a request to a server, the request corresponding to receiving aplurality of user interface controls for an application, wherein theplurality of user interface controls are configured to be rendered atthe first device and a second device; in response to the transmission ofthe request from the first device, receiving a first user interfacecontrol of the plurality of user interface controls for the application,the first user interface control being encapsulated with avirtualization component and an event-type variable associated with thefirst user interface control; and rendering, at the first device, thefirst user interface control based on the virtualization component andthe event-type variable associated with the first user interfacecontrol.
 2. The method of claim 1 further comprising: in response to amodification of an event-type variable associated with a second userinterface control of the plurality of user interface controls, receivingthe modification for modifying the event-type variable associated withthe first user interface control, wherein the second user interfacecontrol is associated with the second device.
 3. The method of claim 1,wherein each of the plurality of user interface controls is encapsulatedby: separating a user interface of the application into the plurality ofuser interface controls; encapsulating each of the plurality of userinterface controls by packaging each user interface control with atleast one virtualization component; determining a local variable thataffects both the first user interface control and a second userinterface control among the plurality of user interface controls; andreplacing the local variable with the event-type variable.
 4. The methodof claim 3, wherein encapsulation of each of the plurality of userinterface controls further comprises: determining that a user isexecuting the application simultaneously on the first device and thesecond device.
 5. The method of claim 1, wherein the first device andthe second device are associated with a user.
 6. The method of claim 1further comprising: receiving a second user interface control of theplurality of user interface controls for the application, the seconduser interface control being encapsulated with another virtualizationcomponent and an event-type variable associated with the second userinterface control; and rendering, at the second device, the second userinterface control based on the another virtualization componentassociated with the second user interface control.
 7. The method ofclaim 1, wherein the virtualization component comprises one or more of acopy of a header associated with the application, instructions forrendering the first user interface control, and at least onedistributed-user-interface-related control.
 8. The method of claim 1,further comprising: causing the first user interface control to detectan interface type associated with the first device and/or provide atleast one display instruction for rendering the first user interfacecontrol at the first device.
 9. A client device comprising: a memoryconfigured to store program instructions; and a processor configured toexecute the program instructions stored in the memory to: transmit arequest to a server, the request corresponding to receiving a pluralityof user interface controls for an application, wherein the plurality ofuser interface controls are configured to be rendered at the clientdevice and another client device; in response to the transmission of therequest from the client device, receive a first user interface controlof the plurality of user interface controls for the application, thefirst user interface control being encapsulated with a virtualizationcomponent and an event-type variable associated with the first userinterface control; and render, at the client device, the first userinterface control based on the virtualization component and theevent-type variable associated with the first user interface control.10. The client device of claim 9, wherein the processor is furtherconfigured to: in response to a modification of an event-type variableassociated with a second user interface control of the plurality of userinterface controls, receive the modification for modifying theevent-type variable associated with the first user interface control,wherein the second user interface control is associated with the anotherclient device.
 11. The client device of claim 9, wherein the clientdevice and the another client device are associated with a user.
 12. Theclient device of claim 9, wherein encapsulation of each of the pluralityof user interface controls comprises: determining that a user isexecuting the application simultaneously on the client device and theanother client device.
 13. The client device of claim 9, wherein theprocessor is further configured to: receive a second user interfacecontrol of the plurality of user interface controls for the application,the second user interface control being encapsulated with anothervirtualization component and an event-type variable associated with theanother client device, wherein the second user interface control isrendered at the another client device based on the anothervirtualization component.
 14. The client device of claim 9, wherein thevirtualization component comprises one or more of a copy of a headerassociated with the application, instructions for rendering the firstuser interface control, and at least onedistributed-user-interface-related control.
 15. The client device ofclaim 9, wherein the processor is further configured to: cause the firstuser interface control to detect an interface type associated with theclient device and/or provide at least one display instruction forrendering the first user interface control at the client device.